//引入容器
import {
	tokenStore
} from "../stores/token"
//用于存放url
const baseUrl = "http://localhost:8080"
//向后端请求的拦截器
const requstLan = {
	invoke(options) {
		//url中是否包含http
		if (!options.url.startsWith('http')) {
			//如果不包含http那么去添加一下
			options.url = baseUrl + options.url
			// console.log(options.url)
		}
		//设置请求超时
		options.timeot = 10000; //10秒的请求时间
		//添加小程序的请求头
		options.header = {
			'source-client': 'miniapp',
		}

		//判断容器中是否含有jwt
		const token = tokenStore().token;
		//const token = tokenStore.token
		if (token) {
			options.header.Authorization = token;
		}
	},

}
// 拦截 request 请求
// 所有request请求都会执行requstLan这个拦截器
uni.addInterceptor('request', requstLan)

//
//后端响应的拦截器
export const http = (options) => {
	return new Promise((resolve, reject) => {
		uni.request({
			...options,
			
			//成功响应执行
			success (res){
				
				//通过后端响应的状态码进行判断
				if (res.data.code == 0) {
					uni.showToast({
						title: '权限不足',
						duration: 2000,
						icon: 'error'
					});
					//执行失败
					reject(res)
				} else if (res.data.code == 1) {
					uni.showToast({
						title: '未登录或登录状态已过期',
						duration: 2000,
						icon: 'error'
					});
					uni.navigateTo({
						//跳转到登录页面
						url: '/pages/login/login',
					})
					//执行失败
					reject(res)
				}else{
					//执行成功，向页面传递数据res.data
					resolve(res.data)
				}
			},
			//响应失败
			fail(res){
				uni.showToast({
					title: '网络有点差，请稍后再试',
					duration: 2000,
					icon: 'error'
				});
				reject(res)
			}
		})
	})
}